
The BT Joint is used to created BulletPhysics Joints between particles.
This can be done at any time and can be controlled in a variety of ways,
most basically with the On input. The only required inputs are the Particle
From and Particle To which define the two particles involved, where one
particle is identified as the start of the joint (From) and the other
as the end of the joint (To).
The joint occupies a single point in space, which can be specified with
either the Position From and Position To, or with the World Position.
Position From and Position To can sometimes be difficult to calculate
as the same point in space, so the World Position input is often preferred.
(If you simply use the Particle From position as the Position From, and
the Particle To's position as Position To, the joint will likely behave
erratically and explode because the single point in space is attempting
to exist in two locations at once.)
Calculating the joint World Position can be as simple as averaging the
two particle positions with an Expression operator ((v1+v2)/2). Keep in
mind that as a single point in space the joint would ideally be located
somewhere in-between the two particle meshes. This can require more advanced
calculations, such as using an Intersect calculation from each particle
towards the other particle in order to get a surface position on each
particle mesh, then averaging those two positions. Of course you could
also simply calculate one Intersect and use that one result as the joint
location. The options are wide open.
Once the joint is defined you can connect the Joint* output to an BTJointDataOperator
to create additional properties such as velocity and rotational breaking
thresholds, or spring values, or dampening, etc.
ON - (Bool) This input data
stream determines whether the operator is considered 'on' or 'off.' You
can connect other operators to this input channel such as a Bool
Helper to activate/deactivate the whole operator.
Time - (Time) This input data stream is used to define the local
time for the operator when the user wants to override the default system
time.
Particle From - sets the "From" particle ID that will
be used to create a Joint
Particle To - sets the "To" particle ID that will be
used to create a Joint
Position From - defines
the joint position in object space as seen from the "From" particle
where the Joint will be placed between the two Joint partners.
Position To - defines the joint position in object space as seen
from the "To" particle where the Joint will be placed between
the two Joint partners.
Type - lets you set the type of Joint that will be created between
the two particles. Possible options are:
0 = Point To Point
1 = Hinge
2 = Cone Twist
3 = Slider
4 = D6
5 = D6 Spring
6 = Rope Anchor
World Position - inputs
the Joint's position in world space coordinates that needs to be created
between the two particles.
World Alignment - inputs the Joint's alignment in world space
coordinates that needs to be created between the two particles.
Joint - outputs the currently
created joint ID. The BT Joint is used to created BulletPhysics Joints
between particles.

Collision - lets you choose,
from the drop down menu, the physics engine solver to use for the Joint
simulation. All compatible solvers found in the thinkingParticles setup
will be automatically listed.
Type - lets you choose a certain type of Joint for the particle
pair, connected to this operator.
0 = Point To Point
1 = Hinge
2 = Cone Twist
3 = Slider
4 = D6
5 = D6 Spring
6 = Rope Anchor
Find below a description of the supported constraint types.

The point to point constraint limits the translation so that the local pivot points of two rigid bodies match in world space. A chain of rigid bodies can be connected using this constraint.

The hinge constraint, restricts two additional angular degrees of freedom, so the body can only rotate around one axis, the hinge axis. This can be useful to represent doors and wheels rotating around one axis. Various limits and the use of a motor can be specified for this joint type.
To create ragdolls, for example, the cone twist constraint is very useful for limbs; like the upper arm. It is a special point to point constraint that adds cone and twist axis limits. The x-axis serves as a twist axis.

The slider constraint allows the body to rotate around one axis and translate along this axis.
This generic constraint can emulate a variety of standard constraints, by configuring each of the six degrees of freedom (DOF). The first 3 DOF axis are linear axis, which represent translation of rigid bodies, and the latter 3 DOF axis represent the angular motion. Each axis can be either locked, free or limited. Keep in mind that several combinations that include free and/or limited angular degrees of freedom are undefined.
This joint is a modification of the original D6 Joint to support springs. it is important to note, that this joint type is either a spring or a motor but not both at the same type.
This type of joint is only working with ropes, and its purpose is to link a rope knot to an object.